H2 Database ব্যবহার করে Spring JDBC Testing করা

Java Technologies - স্প্রিং জেডিবিসি (Spring JDBC) Spring JDBC এবং Testing |
123
123

H2 ডেটাবেস একটি ইন-মেমরি ডেটাবেস, যা সহজ এবং দ্রুত টেস্টিংয়ের জন্য আদর্শ। Spring JDBC এবং H2 ডেটাবেস একসাথে ব্যবহার করে আপনি টেস্টিং প্রক্রিয়া আরও কার্যকর করতে পারেন। এটি সহজেই ইন-মেমরি ডেটাবেস তৈরি করে, যেখানে ডেটা অস্থায়ীভাবে সংরক্ষিত হয় এবং অ্যাপ্লিকেশন বন্ধ হওয়ার সাথে সাথে ডেটা মুছে যায়।


H2 Database এবং Spring JDBC এর মাধ্যমে টেস্টিং করার ধাপসমূহ

ধাপ ১: Maven ডিপেনডেন্সি যোগ করা

Spring এবং H2 ডেটাবেস ব্যবহার করার জন্য নিচের ডিপেনডেন্সি যুক্ত করুন:

<dependencies>
    <!-- Spring JDBC -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>5.3.21</version>
    </dependency>

    <!-- H2 Database -->
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>2.1.214</version>
        <scope>test</scope>
    </dependency>

    <!-- JUnit (Testing Framework) -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter</artifactId>
        <version>5.9.3</version>
        <scope>test</scope>
    </dependency>
</dependencies>

ধাপ ২: H2 ডেটাবেসের জন্য Spring Configuration তৈরি করা

Spring টেস্ট কনফিগারেশন তৈরি করুন, যেখানে H2 ডেটাবেস এবং JdbcTemplate কনফিগার করবেন।

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

import javax.sql.DataSource;

@Configuration
public class TestConfig {

    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("org.h2.Driver");
        dataSource.setUrl("jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE");
        dataSource.setUsername("sa");
        dataSource.setPassword("");
        return dataSource;
    }

    @Bean
    public JdbcTemplate jdbcTemplate(DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }
}

ধাপ ৩: SQL Schema এবং ডেটা সেটআপ

schema.sql এবং data.sql ফাইল তৈরি করুন।
Spring Boot টেস্ট চলাকালীন এই ফাইলগুলো স্বয়ংক্রিয়ভাবে লোড করবে।

schema.sql:

CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    department VARCHAR(50)
);

data.sql:

INSERT INTO employees (id, name, department) VALUES (1, 'John Doe', 'IT');
INSERT INTO employees (id, name, department) VALUES (2, 'Jane Smith', 'HR');

ধাপ ৪: টেস্টিং ক্লাস তৈরি করা

Spring টেস্টিং পরিবেশে H2 ডেটাবেস ব্যবহার করে টেস্টিং করার জন্য JUnit ব্যবহার করুন।

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.List;
import java.util.Map;

import static org.junit.jupiter.api.Assertions.*;

@SpringBootTest(classes = TestConfig.class)
public class EmployeeServiceTest {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Test
    public void testFetchEmployees() {
        // Fetch all employees
        String query = "SELECT * FROM employees";
        List<Map<String, Object>> employees = jdbcTemplate.queryForList(query);

        // Verify the data
        assertEquals(2, employees.size());
        assertEquals("John Doe", employees.get(0).get("name"));
        assertEquals("Jane Smith", employees.get(1).get("name"));
    }

    @Test
    public void testAddEmployee() {
        // Insert a new employee
        String insertQuery = "INSERT INTO employees (id, name, department) VALUES (?, ?, ?)";
        int rowsAffected = jdbcTemplate.update(insertQuery, 3, "Alice Brown", "Finance");

        // Verify the data
        assertEquals(1, rowsAffected);

        // Fetch and verify
        String fetchQuery = "SELECT * FROM employees WHERE id = ?";
        Map<String, Object> employee = jdbcTemplate.queryForMap(fetchQuery, 3);
        assertEquals("Alice Brown", employee.get("name"));
        assertEquals("Finance", employee.get("department"));
    }
}

Spring Boot-এর জন্য H2 ব্যবহার সহজীকরণ

Spring Boot টেস্টিংয়ের সময় schema.sql এবং data.sql ফাইলগুলো স্বয়ংক্রিয়ভাবে লোড করা যায়। এটির জন্য কোনো অতিরিক্ত কনফিগারেশন প্রয়োজন নেই।

Application.properties:

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.schema=classpath:schema.sql
spring.datasource.data=classpath:data.sql

Spring Boot চালু হওয়ার সময় এটি H2 ডেটাবেস সেটআপ করবে এবং SQL স্ক্রিপ্টগুলো লোড করবে।


H2 Database Console ব্যবহার

টেস্ট চলাকালীন H2 ডেটাবেসের ডেটা দেখতে কনসোল ব্যবহার করতে পারেন।

Application.properties:

spring.h2.console.enabled=true
spring.h2.console.path=/h2-console

H2 কনসোল অ্যাক্সেস করতে ব্রাউজারে যান:

http://localhost:8080/h2-console

ড্রাইভার: org.h2.Driver
জড়ু URL: jdbc:h2:mem:testdb


H2 Database ব্যবহার করার সুবিধা

  1. ইন-মেমরি ডেটাবেস: দ্রুত এবং অস্থায়ী ডেটা ব্যবস্থাপনা।
  2. সহজ সেটআপ: Spring Boot বা Spring Framework এর সাথে সহজে ইন্টিগ্রেশন।
  3. ডেভেলপমেন্ট এবং টেস্টিং ফ্রেন্ডলি: ডেটাবেস ম্যানেজমেন্ট ছাড়াই টেস্টিং করা যায়।
  4. কনসোল সাপোর্ট: সহজে ডেটাবেস স্ট্রাকচার এবং ডেটা পরীক্ষা করা যায়।

উপসংহার

H2 ডেটাবেস Spring JDBC টেস্টিংয়ের জন্য একটি সহজ, দ্রুত এবং কার্যকর সমাধান। এটি ইন-মেমরি হওয়ায় টেস্টিংয়ের সময় কোনো স্থায়ী ডেটাবেসের প্রয়োজন হয় না। Spring Boot-এর সাহায্যে H2 ইন্টিগ্রেশন আরও সহজ এবং সময়সাশ্রয়ী হয়।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion